#pragma once

#include "IGameState.h"

class Label;
class TransitionStateUserInterface;
class GameStateObject;

namespace ZeEngine
{
    class Timer;
}

class TransitionState : public ZeEngine::IGameState
{
public:
    TransitionState(u32 durationInSec, std::shared_ptr<GameStateObject> pGameStateObject);
    virtual ~TransitionState();

    virtual bool Init(ZeEngine::GameEngine& gameEngine) override;
    virtual void PreUpdate(ZeEngine::GameEngine& gameEngine) override;
    virtual bool Update(ZeEngine::GameEngine& gameEngine) override;
    virtual void PostUpdate(ZeEngine::GameEngine& gameEngine) override;
    virtual void Destroy(ZeEngine::GameEngine& gameEngine) override;

private:
    std::shared_ptr<ZeEngine::Timer>       m_timer;
    u32                                    m_duration;

    std::shared_ptr<TransitionStateUserInterface>       m_userInterface;
    std::shared_ptr<GameStateObject>                    m_pGameStateObject;

};

